The present invention relates generally to image forming equipment and is particularly directed to printers of the type which halftone color or black and white images. The invention is specifically disclosed as a printer that provides a 10-bit unadjusted stochastic threshold array, and applies one or more parameterized transfer function equations at run time to the unadjusted array to derive an 8-bit adjusted threshold array, thereby improving perceptual printer response while saving memory space.
Threshold arrays have been used for years to accomplish halftoning for image forming equipment, such as printers. Modern printers generally use a threshold array in a tiling manner to halftone a particular square or rectangular portion of an image bitmap that is to be printed, and then move the threshold array to the next position as if placing a new tile over the bitmap in an adjacent location. Video displays also can operate using tiled threshold arrays. Threshold arrays include array elements that have numeric values that range from the lightest gray scale shade to the darkest gray scale shade. As the light intensity (or a particular color intensity) increases, a greater number of pixels will be illuminated in a display device such as a liquid crystal display, or conversely a fewer number of dots will be printed in the case of a printer as the output device. This is accomplished by comparing the actual pixel intensity values against the array element numeric values. For example, all dots will be printed. for threshold levels at array element locations that have a numeric value less than the dot intensities of the input image information.
The numeric values of the array elements for threshold arrays in conventional printers are normally integer values that define a plurality of gray levels, and the most typical range of numeric values is from 0 through 255, which are represented by 8-bit binary numbers. Since 8-bit linear or unadjusted threshold arrays produce printed responses that typically do not match the desired linear human perceptual response, it has been common for most printers to provide adjusted (or corrected) threshold arrays for each color that can be printed by that particular print engine. In color printers, for example, this implies that there would be a minimum of three different adjusted threshold arrays for the xe2x80x9cordinaryxe2x80x9d colors cyan, magenta, and yellow, and further, many color printers also provide black ink, thereby requiring a fourth adjusted threshold array. (Some printers may provide a single threshold array to be used for all colors, but the visual results are not pleasing.) Such adjusted threshold arrays may have array elements of integer numeric values or, to achieve greater precision, the numeric values could each be represented by a floating point number. Floating point values will require, of course, much more storage space in the memory system of a printer than the use of integer values. One main reason that 8-bit integer values are typically used for the gray level representations is that standard memory devices provide xe2x80x9cchunksxe2x80x9d of memory in bytes, which each comprise a set of 8 bits.
Early printers may have used unadjusted threshold arrays to produce their final printed outputs, however, such printers usually lose tone levels, and at best exhibit crude approximations to the desired perceptual tone levels. While some print engines may produce reasonable perceptual responses by use of unadjusted threshold arrays, that is not the general case, and adjusted threshold arrays are much more common.
To develop a linearized halftone screen, it is common to start with a grid of equal proportions of the numbers between one (1) and the maximum value, and then print squares representing each of the tone levels. The printed squares can be then measured with respect to the parameter that is desired to be linearized. The series of measured values can then be assembled and analyzed to form an adjusted (or corrected) halftone screen or threshold array that is linear. The new screen or array is formed for a given paper type, color plane, printing mechanism, etc., and usually is stored in ROM to be used when printing.
The maximum value of the equal proportions used in generating the unadjusted threshold array may not be the same as the maximum tone level. However, the maximum values of the adjusted screen or threshold array and the tone level must be the same. It very rarely occurs that using an unadjusted screen yields a set of equally visually spaced discernible intensity levels, which is the property of a xe2x80x9cperfectxe2x80x9d halftone screen. Thus, it is necessary to xe2x80x9ccorrectxe2x80x9d (or adjust) this screen.
In correcting the screen (or threshold array), the first thing to be achieved is determining a set of distinct intensity levels, as many as the number of tone levels (i.e., gray scale levels in many cases). These intensity levels must be analyzed and modified so that they are as visually distinct as possible. This usually is done by linearizing the screens in L* space. Historically, correction (or adjustment) of the screens or threshold arrays has been done using one of two different methods. The first method is referred to as the xe2x80x9carray mappingxe2x80x9d method, which stores a one-dimensional array that maps each of the possible values in the uncorrected (or unadjusted) screen or threshold array to the appropriate value in the corrected (or adjusted) screen or threshold array. Each of the values in the unadjusted screen or threshold array is used as an index to the array map, and the adjusted screen or threshold array is formed therefrom. This method saves memory space, but can be restrictive concerning the number of dots that must be placed on the page for different tone levels. For example, if the uncorrected (or unadjusted) screen or array has dimensions of 128xc3x97128, and if there are 256 tone levels, each tone level must contain 64 more dots than the previous level, assuming that the unadjusted screen or array contains equal proportions of each value (which must be true if it is to be used as a base to transition to adjusted (or corrected) arrays).
Since being restricted to adding a fixed number of dots at each level reduces the number of distinct intensity levels, accuracy will suffer. This accuracy problem can be alleviated by increasing the range of values in the unadjusted screen or array until the maximum number of unique levels is obtained. Unfortunately, this also increases the size of both the one-dimensional arrays and the unadjusted screens, which are both stored in the printer when using the array mapping method. The size of the one-dimensional arrays increases proportionally with the bit size of the uncorrected (or unadjusted) screens or threshold arrays.
The second historical correcting method is called the xe2x80x9ccomplete storagexe2x80x9d method. This performs the complete correction of the threshold arrays offline, and all of the adjusted (or corrected) threshold arrays are stored in the ROM of the printer. No correction takes place at run time. This method requires a large amount of memory space; however, it""s advantage it that the adjusted (or corrected) threshold arrays can be manipulated as necessary to obtain the greatest number of visually discernible intensity levels, since all correction is done offline (i.e., at the factory). Increase of accuracy does not mean an increase of the memory space required for storage. Nevertheless, the memory storage space is quite large for any threshold arrays of meaningful precision.
In printers that provide adjusted threshold arrays, a separate transfer function is typically determined for each color that can be printed, and additionally, for each type of print media that will be printed on. The benefits of using adjusted threshold arrays include assuring that there will be 256 unique tone levels (e.g., for 8-bit integer gray levels), and further, to produce tone levels as close as possible to each desired perceptual level. However, a separate array must be generated for each combination of color and type of paper, and therefore, a large amount of memory is required to store each of the separate, adjusted threshold arrays. More detailed examples of the memory requirements are provided hereinbelow.
Once the printer""s actual response curve is known, it is possible to apply a transfer function to correct or adjust the data so that a perceptually appropriate gray level will be printed for a corresponding lightness level L*. In the prior art, such transfer functions have normally taken the form of a correction factor that is added to the gray level for a particular lightness L* value. In essence, the printer""s response curve (such as curve 102 on FIG. 2) is compared to the ideal target response (such as line 100 on FIG. 2), and the deviation at all important points is calculated. Once this deviation is known, it is a simple matter to create a mirror-image curve on the opposite side of the ideal target response line 100, and this mirror-image curve can be added to the actual printer response curve (such as curve 102) and an average taken, which then will provide the adjusted (or corrected) response that will have the appearance of the ideal target response line 100.
While the prior art methodology works well for many conventional printers, a large amount of memory storage space is required to store the corrected threshold array that is generated or derived by applying the mirror image transfer function curve to correct for the printer""s non-linear actual response curve. Moreover, since correcting for each printer color and print media type will lead to a large number of possible combinations, it has been common in the prior art for the conventional printers to store a large number of such adjusted threshold arrays in their non-volatile memory, such as in the printer""s ROM, thereby requiring substantial amounts of memory space.
Since threshold arrays provide an extremely fast way to halftone an image, various types of halftoning techniques have been developed that all use threshold arrays, including cluster-dot ordered dithering (known as xe2x80x9cclassicalxe2x80x9d screening), dispersed-dot ordered dithering (known as xe2x80x9cBayerxe2x80x9d screening), dispersed-dot unordered dithering (known as stochastic screening), or another form of stochastic screening, using cluster-dot unordered dithering. For printers that must quickly process image data for an incoming print job, this extremely fast method using threshold arrays so far seems to be the optimum method to halftone various types of images. It would be very beneficial to further streamline the process of providing corrected threshold arrays, especially when that process can also save memory space within the printer""s memory circuits.
Accordingly, it is a primary advantage of the present invention to provide an image forming apparatus such as a printer that stores a minimum number of threshold arrays in non-volatile memory, and at run time creates adjusted threshold arrays to meet the precise print job requirements, such as for the appropriate colors and appropriate types of print media.
It is another advantage of the present invention to provide an image forming apparatus such as a printer that stores a minimal number of unadjusted threshold arrays consisting of numeric elements that have a greater precision than the numeric elements of adjusted threshold arrays that are derived at run time and which benefit from the greater precision of the unadjusted arrays to more nearly match the printer""s response to the human visual perceptual levels.
It is a further advantage of the present invention to provide an image forming apparatus such as a printer that stores a minimal number of unadjusted threshold arrays consisting of numeric elements that have a greater precision than the numeric elements of adjusted threshold arrays that are derived at run time and which benefit from the greater precision of the unadjusted arrays to create a predetermined non-linear response that closely matches a response of another printing device, as desired for a specific printing application.
It is a yet further advantage of the present invention to provide an image forming apparatus such as a printer that stores a minimal number of unadjusted threshold arrays and generates adjusted threshold arrays that are derived at run time and which compensate for the gradual change in darkness of the printer response due to the aging of an electrophotographic (EP) process cartridge over its useful life, by providing new transfer functions that further correct the adjusted threshold arrays after predetermined amounts of usage of the EP process cartridge.
It is yet another advantage of the present invention to provide an image forming apparatus such as a printer that stores a minimum number of unadjusted threshold arrays along with a set of transfer function equations that can quickly produce a set of adjusted threshold arrays that are minimal in number to reduce memory requirements, and further that are produced for the specific print job requirements, such as the appropriate colors to be printed as well as the type of print media to be printed upon.
It is still a further advantage of the present invention to provide an image forming apparatus such as a printer that stores a minimal number of unadjusted threshold arrays in a packed memory configuration to minimize the amount of memory space required in a non-volatile memory circuit, and to provide an unpacking routine that quickly re-configures the unadjusted threshold array data in a format that allows quick access and application of a set of transfer function equations to derive a set of adjusted threshold arrays to be stored in the printer""s RAM circuit.
It is still another advantage of the present invention to provide an image forming apparatus such as a printer having a minimal number of unadjusted threshold arrays stored in a printer""s non-volatile memory circuit in a packed data format to minimize the amount of space required in the printer""s ROM storage circuit, and to provide an unpacking routine that quickly unpacks the unadjusted threshold array data, and applies one or more transfer function equations that generate a set of adjusted threshold arrays at run time, in which these adjusted threshold arrays are generated for the precise print job requirements, such as appropriate colors and type of print media to be printed upon.
It is yet a further advantage of the present invention to provide a set of packed data stochastic threshold arrays that are stored in a printer""s non-volatile memory circuit, in which these threshold arrays comprise array elements having numeric values of a greater precision than the precision of numeric elements for later derived adjusted threshold arrays that are generated at run time by the printer after application of a set of transfer function equations that convert the unadjusted threshold arrays into adjusted threshold arrays.
Additional advantages and other novel features of the invention will be set forth in part in the description that follows and in part will become apparent to those skilled in the art upon examination of the following or may be learned with the practice of the invention.
To achieve the foregoing and other advantages, and in accordance with one aspect of the present invention, an improved printer is provided that stores a minimal number of unadjusted stochastic threshold arrays in non-volatile memory, in which a single stochastic threshold array is provided per ordinary color of the printer. For example, if the printer is a black and white printer only, then only a single stochastic threshold array would be required. This single unadjusted array is used to determine the printer""s light intensity printed response, which will not likely provide an ideal target response as compared to the perceptual intensity levels of the human eye. Accordingly, the uncorrected threshold array needs to be adjusted before the array is used to halftone image data in the form of a print job.
The unadjusted array for a particular color is stored in the printer""s ROM (Read Only Memory) and preferably is stored in a packed configuration to save memory space. A set of transfer function equations (also referred to herein as xe2x80x9cparameterized transfer functionsxe2x80x9d) additionally are provided for the various types of print media that can be expected for use with a particular printer, as well as for various combinations of ordinary colors and specialized colors. For example, if the uncorrected threshold array represents the color magenta, and if the print media type is xe2x80x9cplain paper,xe2x80x9d and further if the type of printing that is to be accomplished is to use the xe2x80x9cordinaryxe2x80x9d magenta shading, then either a single transfer function equation, or multiple transfer function equations, is/are applied to the unadjusted threshold array, which produces a single corrected threshold array that will be the xe2x80x9ctarget arrayxe2x80x9d for halftoning the color magenta when printing this particular print job. On the other hand, if a xe2x80x9cdilutedxe2x80x9d magenta color ink is to be utilized (for example, if a color xe2x80x9cphoto cartridgexe2x80x9d is used in a particular style of ink jet color printer), then a different set of transfer function equations will be applied to the unadjusted threshold array to produce a different adjusted threshold array (i.e., for diluted magenta ink) that will finally be used at run time to halftone this particular print job. This is just one example of the various combinations of color shades and print media types that can be utilized with a modem color printer.
The mere use of unadjusted threshold arrays will typically produce printed shades that are too dark as compared to the incremental shade differences as perceived by the human eye. The transfer function equations are used to convert the unadjusted threshold data into adjusted threshold data for each color and type of print media. In a preferred embodiment, the particular transfer function equations generate a temporary conversion table which essentially acts as a look-up table in which the original numeric value of a particular array element in the unadjusted threshold array is found, and a different numeric value is then substituted therefor. In short, for every array element position in which the original numeric value appeared, a corrected numeric value is then substituted in the same row and column position of the derived, adjusted threshold array. This occurs very quickly at run time for each print job received by the printer that requires halftoning.
As an alternative embodiment, the transfer function equations can be applied to each single data element of the unadjusted threshold array, and a new xe2x80x9ccorrectedxe2x80x9d data value can be calculated and placed into the appropriate memory element location in the adjusted threshold array now being derived. In this alternative methodology, a temporary look-up table is not needed, which saves some space in the printer""s RAM that otherwise would need to be temporarily allocated. However, in this alternative methodology, the execution or processing time to derive the adjusted threshold array in this mannerxe2x80x94that is, by inspecting each numeric value of the unadjusted threshold array and then applying the correct transfer function equation for the correct range of gray scale values to calculate the corrected numeric value in the adjusted arrayxe2x80x94will likely be greater than that of the preferred methodology described above. It should be noted that multiple calculations for the very same numeric value will be the result of applying the alternative methodology in circumstances where the unadjusted threshold array is of a sufficient size, i.e., if its size requires the same threshold level numeric value in multiple array element locations.
In the preferred mode of the present invention, the unadjusted threshold array comprises a 128 row by 128 column sized array, and each element of this array comprises a 10-bit number having a precision of one part in 1024. When the transfer function equations are applied to this unadjusted array, the resulting numeric values for the adjusted array elements are produced as 8-bit numeric values, which provides a somewhat lower precision of one part in 256. This greater precision in the originating unadjusted array provides more perceptual levels of intensity (i.e., color brightness), which is particularly important at the lighter shades of each color. This greater number of possible printed gray levels by using the 10-bit numeric data is used to advantage, and the adjusted threshold arrays derived therefrom will add only the number of dots per gray level (i.e., per differential threshold array level) that are required to provide a printer response that very nearly approximates the human eye perceptual differential response of intensity. In essence, the 8-bit adjusted threshold arrays used in printing the colors effectively have the precision of 10-bit data.
Since most modem microprocessor and memory circuits are based upon 8-bit bytes, use of 10-bit data normally requires a 2-byte data word for storage in the memory circuit. Such 2-byte data words are easily accessed for each individual 10-bit data numeric value. However, in the preferred embodiment of the present invention, the unadjusted threshold arrays are stored in a packed data format, such that contiguous memory locations are used to store each 10-bit numeric value with no unused bits spaced therebetween (e.g., such as xe2x80x9cpadding bitsxe2x80x9d used to round the data size up to two bytes per value). This saves over 35% of the memory space in the printer""s non-volatile memory required for storing the unadjusted threshold arrays.
At run time, it is preferred to unpack this 10-bit data for the unadjusted threshold arrays by removing each 10-bit numeric value from the packed memory locations and placing it into a different 2-byte set of memory locations, which then makes it very easy to access this 10-bit data value merely by scrolling through the various memory locations. The appropriate transfer function equations are then applied to each unadjusted threshold array, and the output of this transfer function equation application is an 8-bit numeric value for each array element in the derived adjusted threshold array that will be used for printing that particular color/media combination. Since the adjusted threshold array uses 8-bit numeric data, this will perfectly correspond to a single byte of memory space, thereby most efficiently packing this adjusted array data.
The principles of the present invention can be applied to any type of unadjusted threshold arrays, regardless of how they are derived (e.g., stochastic, dot-cluster, etc.). Moreover, the present invention will produce a memory savings in the printer regardless of the data size of the unadjusted threshold arrays and the resulting adjusted threshold arrays, by use of the transfer function equations as described hereinbelow. Furthermore, the present invention can be used to advantage regardless of whether or not the data is packed or unpacked, since both a memory storage space savings is exhibited, as well as an increase in efficiency by using less processing time to derive the adjusted threshold arrays at run time, as compared to other methodologies. Finally, the present invention can be used to advantage to provide corrected threshold arrays regardless of the shape of the response curves of any of the colors when utilizing a particular print engine""s response curve for its unadjusted threshold array data.
The principles of the present invention not only apply to printers, but also apply equally well to other types of image forming apparatuses including copiers and video displays that use halftoning techniques. Of course, many video monitors do not require halftoning, since they can be designed to directly apply the correct intensity of the individual primary colors for each pixel. However, certain types of video displays may well require halftoning for a correct or pleasing visual appearance of images. Such video displays include liquid crystal displays (LCD""s) and light emitting diode (LFD) displays. Moreover, even some cathode ray tube (CRT) displays may use halftoning, especially for older such CRT""s.
The principles of the present invention further apply not only to situations where the printer""s response is being corrected so as to appear xe2x80x9clinearxe2x80x9d in accordance with human visual perception, but also to situations where the printer""s response is purposely being corrected so as to appear xe2x80x9cnon-linearxe2x80x9d in accordance with a customer/user""s printing application. Moreover, the principles of the present invention can be used to compensate for the gradual change in darkness in the printer response due to aging of components of EP-type printers (including components of EP process cartridges). A new set of transfer function equations can be applied to create a new set of adjusted threshold arrays after predetermined amounts of usage of the EP process cartridge, or other internal printer components.
Still other advantages of the present invention will become apparent to those skilled in this art from the following description and drawings wherein there is described and shown a preferred embodiment of this invention in one of the best modes contemplated for carrying out the invention. As will be realized, the invention is capable of other different embodiments, and its several details are capable of modification in various, obvious aspects all without departing from the invention. Accordingly, the drawings and descriptions will be regarded as illustrative in nature and not as restrictive.